// overloading di [] --- [] si puo' ora usare sia a sinistra che
// a destra di un assegnamento

#include <iostream>
using namespace std;

class atype {
	int a[3];
public:
	atype(int i, int j, int k) {
		a[0] = i;
		a[1] = j;
		a[2] = k;
	}
	int &operator[](int i) {return a[i];}
};

int main()
{
	atype ob(1,2,3);

	cout << ob[1]; // visualizza 2
	cout << "\n";
// ora operator[]() restituisce un indirizzo all'elemento del vettore indicato da i
// in questo caso la coppia [] puņ essere utilizzata anche sul lato sinistro di una istruzione
// di assegnamento in modo da modificare un elemento di un vettore
	ob[1] = 25; // [] alla sinistra di =

	cout << ob[1]; // ora visualizza 25

	return 0;
}
